home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
doom
/
turric03.zip
/
TURRIC03.ZIP
/
PROGS
/
M-SHALRA.QC
< prev
next >
Wrap
Text File
|
1997-01-30
|
8KB
|
258 lines
/*
==============================================================================
SHAL-RATH MORPH
==============================================================================
*/
$cd /raid/quake/id1/models/shalrath
$origin 0 0 24
$base base
$skin skin
$scale 0.7
$frame attack1 attack2 attack3 attack4 attack5 attack6 attack7 attack8
$frame attack9 attack10 attack11
$frame pain1 pain2 pain3 pain4 pain5
$frame death1 death2 death3 death4 death5 death6 death7
$frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10
$frame walk11 walk12
void() player_shalrath_stand = [ $walk1, player_stand1 ] { };
void() player_shalrath_run = {
if(self.walkframe >= 12)
self.walkframe = 0;
self.frame = $walk1 + self.walkframe;
self.walkframe = self.walkframe + 1;
};
void() player_shalrath_pain1 = [ $pain1, player_shalrath_pain2 ]
//** PATCH_BEGIN - morph2 - Turrican ****
{
PainSound();
self.pain_finished = time + 0.4;
self.attack_finished = time + 0.4;
// sound (self, CHAN_VOICE, "shalrath/pain.wav", 1, ATTN_NORM);
};
//** PATCH_END - morph2 - Turrican ******
void() player_shalrath_pain2 = [ $pain1, player_shalrath_pain3 ] {};
void() player_shalrath_pain3 = [ $pain1, player_shalrath_pain4 ] {};
void() player_shalrath_pain4 = [ $pain1, player_shalrath_pain5 ] {};
void() player_shalrath_pain5 = [ $pain1, player_stand1 ] {};
// void() player_shalrath_jump = { self.velocity_z=10; };
void() player_ShalMissileTouch =
{
if (other == self.owner)
return; // don't explode on owner
if (other.classname == "monster_zombie")
T_Damage (other, self, self, 110);
T_RadiusDamage (self, self.owner, 80, world);
sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
WriteByte (MSG_BROADCAST, TE_EXPLOSION);
WriteCoord (MSG_BROADCAST, self.origin_x);
WriteCoord (MSG_BROADCAST, self.origin_y);
WriteCoord (MSG_BROADCAST, self.origin_z);
self.velocity = '0 0 0';
self.touch = SUB_Null;
setmodel (self, "progs/s_explod.spr");
self.solid = SOLID_NOT;
s_explode1 ();
};
/*
================
player_ShalMissile
================
*/
void() ShalHome;
void() player_ShalMissile =
{
local entity missile;
makevectors(self.v_angle);
self.effects = self.effects | EF_MUZZLEFLASH;
sound (self, CHAN_WEAPON, "shalrath/attack2.wav", 1, ATTN_NORM);
missile = spawn ();
missile.owner = self;
missile.solid = SOLID_BBOX;
missile.movetype = MOVETYPE_FLYMISSILE;
setmodel (missile, "progs/v_spike.mdl");
setsize (missile, '0 0 0', '0 0 0');
makevectors (self.v_angle);
if(self.enemy.classname == "worldspawn") {
traceline (self.origin, self.origin + v_forward * 2048, FALSE, self);
self.enemy=trace_ent;
}
missile.velocity = v_forward;
if(self.enemy.classname == "worldspawn") {
missile.enemy = world;
//missile.velocity = v_forward;
} else {
missile.enemy = self.enemy;
//missile.velocity = normalize(self.enemy.origin - self.origin);
}
missile.velocity = missile.velocity * 400;
missile.angles = vectoangles(missile.velocity);
missile.origin = self.origin + '0 0 10';
missile.avelocity = '300 300 300';
missile.nextthink = 0.4 + time;
missile.think = ShalHome;
missile.touch = player_ShalMissileTouch;
};
void() player_shalrath_attack1 = [ $attack1, player_shalrath_attack2 ] {
local vector v;
sound (self, CHAN_VOICE, "shalrath/attack.wav", 1, ATTN_NORM);
self.attack_finished=time+1;
makevectors(self.v_angle);
v=aim(self, 2048);
traceline(self.origin+ self.view_ofs, self.origin+v * 2048 + self.view_ofs, FALSE, self);
if((trace_ent.classname != "worldspawn") && (trace_ent.takedamage & DAMAGE_AIM)) {
self.enemy = trace_ent;
} else if(self.enemy) {
if(!visible(self.enemy)) self.enemy=world;
if(!infront(self.enemy)) self.enemy=world;
if(self.enemy.health <=0) self.enemy=world;
if(self.enemy.takedamage != DAMAGE_AIM) self.enemy=world;
}
};
void() player_shalrath_attack2 = [ $attack2, player_shalrath_attack3 ] {};
void() player_shalrath_attack3 = [ $attack4, player_shalrath_attack4 ] {};
void() player_shalrath_attack4 = [ $attack8, player_shalrath_attack5 ] {};
void() player_shalrath_attack5 = [ $attack10, player_stand1 ] {player_ShalMissile(); };
string() player_shalrath_killmsg = {
return " was exploded by ";
};
string() player_shalrath_killmsg2 = {
return ".\n";
};
//** PATCH_BEGIN - morph2 - Turrican ****
void() player_shal_death1 =[ $death1, player_shal_death2 ] {};
void() player_shal_death2 =[ $death2, player_shal_death3 ] {};
void() player_shal_death3 =[ $death3, player_shal_death4 ] {};
void() player_shal_death4 =[ $death4, player_shal_death5 ] {};
void() player_shal_death5 =[ $death5, player_shal_death6 ] {};
void() player_shal_death6 =[ $death6, player_shal_death7 ] {};
void() player_shal_death7 =[ $death7, player_shal_death7 ]
{
PlayerDead();
MakePlayerCorpse (self.max_health * self.health_modifier * 0.65,
'-32 -32 -24', '32 32 -12');
};
void () player_shalrath_die =
{
self.items = self.items - (self.items & IT_INVISIBILITY);
self.invisible_finished = 0; // don't die as eyes
self.invincible_finished = 0;
self.super_damage_finished = 0;
self.radsuit_finished = 0;
self.view_ofs = '0 0 -8';
self.deadflag = DEAD_DYING;
self.flags = self.flags - (self.flags & FL_ONGROUND);
self.movetype = MOVETYPE_TOSS;
if (self.velocity_z < 10)
self.velocity_z = self.velocity_z + random()*300;
//** PATCH_BEGIN - gibbin3 - Turrican ****
// Pass player size and head.mdl to Corpse_die using globals.
self.corpse_size = SIZE_MEDIUM;
self.head_gib_name = "progs/h_shal.mdl";
//** PATCH_END - gibbin3 - Turrican ******
// check for gib
if (self.health < -90)
{
//** PATCH_BEGIN - gibbin3 - Turrican ****
Corpse_die();
//** PATCH_END - gibbin3 - Turrican ******
return;
}
DeathSound();
self.angles_x = 0;
self.angles_z = 0;
// regular death
player_shal_death1();
};
//** PATCH_END - morph2 - Turrican ******
void() player_shalrath_become = {
//** PATCH_BEGIN - morph2 - Turrican ****
// bprint(self.netname);
// bprint(" has become a vore.\n");
sprint( self, "You have become a vore.\n");
// Stop the morph from flying.
if (self.flags & FL_FLY)
{
localcmd("fly");
self.flags = self.flags - FL_FLY;
}
self._die = player_shalrath_die;
//** PATCH_END - morph2 - Turrican ******
self._stand=player_shalrath_stand;
self._run=player_shalrath_run;
self._pain=player_shalrath_pain1;
self._jump=SUB_Null;
self._jump2=SUB_Null;
self._attack=player_shalrath_attack1;
self._impulse=SUB_Nop;
self._can_get_p=SUB_False;
self._killmsg=player_shalrath_killmsg;
self._killmsg2=player_shalrath_killmsg2;
setmodel(self,"progs/shalrath.mdl");
self.modelindex_morph=self.modelindex;
self.weaponmodel="";
//** PATCH_BEGIN - morph2 - Turrican ****
self.view_ofs = '0 0 32';
if(!deathmatch)
setsize (self, VEC_HULL_MIN, VEC_HULL_MAX);
else
setsize (self, VEC_HULL2_MIN, VEC_HULL2_MAX);
//** PATCH_END - morph2 - Turrican ******
self.health = self.health * 3.0 / self.health_modifier;
self.health_modifier = 3.0;
makevectors(self.v_angle);
spawn_tfog(self.origin + 20 * v_forward);
DropBackpack2();
//** PATCH_BEGIN - morph2 - Turrican ****
self.currentammo = 0;
self.weapon = VORE_HOMING_MISSILE;
// Make morphs ignore player colors.
if (self.colormap != 0)
{
self.temp_colormap = self.colormap;
self.colormap = 0;
}
// Make morphs ignore player skins.
if (self.skin != 0)
{
self.temp_skin = self.skin;
self.skin = 0;
}
//** PATCH_END - morph2 - Turrican ******
};